import router from "./router";
import store from "./store";
import { Message } from "element-ui";
import NProgress from "nprogress";
import "nprogress/nprogress.css";
import { getToken } from "@/utils/auth";
import { isRelogin } from "@/utils/request";

NProgress.configure({ showSpinner: false });

const whiteList = ["/login"];

router.beforeEach((to, from, next) => {
  NProgress.start();
  if (getToken()) {
    /* has token*/
    if (to.path === "/login") {
      next({ path: "/" });
      NProgress.done();
    } else {
      if (localStorage.getItem("selectCompany")) {
        if (!store.state.name) {
          store
            .dispatch("GetInfo")
            .then((res) => {
              next(); // hack方法 确保addRoutes已完成
            })
            .catch((err) => {
              store.dispatch("LogOut").then(() => {
                Message.error(err);
                next({ path: "/" });
              });
            });
        } else {
          next();
        }
      } else {
        if (to.path === "/company") {
          next();
        } else {
          next("/company");
        }
      }
    }
  } else {
    // 没有token
    if (whiteList.indexOf(to.path) !== -1) {
      // 在免登录白名单，直接进入
      next();
    } else {
      console.log(to);
      next(`/login?redirect=${to.fullPath}`); // 否则全部重定向到登录页
      NProgress.done();
    }
  }
});

router.afterEach(() => {
  NProgress.done();
});
